package com.cxz.study.loggerApi;

/**
 * @className: BizLogger
 * @author: ocxz1
 * @date: 2025/6/17 下午11:05
 * @Version: 1.0
 * @description: ddd-struct3
 * 业务日志记录接口，提供统一的日志抽象，屏蔽底层具体日志实现（如 SLF4J、Log4j 等）。
 * <p>
 * 通过此接口，可以在 domain 层或 service 层中使用参数化日志输出，并支持日志级别判断，
 * 实现高效、解耦的日志记录方式。
 */
public interface BizLogger {

    /**
     * 判断是否启用 TRACE 日志级别。
     *
     * @return 如果启用 TRACE 级别则返回 true，否则返回 false
     */
    boolean isTraceEnabled();

    /**
     * 记录 TRACE 级别的日志消息（支持参数化格式）。
     *
     * @param format 消息模板，使用 {} 表示参数位置
     * @param arguments 参数值列表
     */
    void trace(String format, Object... arguments);

    /**
     * 记录 TRACE 级别的异常日志。
     *
     * @param msg 异常描述信息
     * @param t 异常对象
     */
    void trace(String msg, Throwable t);


    /**
     * 判断是否启用 DEBUG 日志级别。
     *
     * @return 如果启用 DEBUG 级别则返回 true，否则返回 false
     */
    boolean isDebugEnabled();

    /**
     * 记录 DEBUG 级别的日志消息（支持参数化格式）。
     *
     * @param format 消息模板，使用 {} 表示参数位置
     * @param arguments 参数值列表
     */
    void debug(String format, Object... arguments);

    /**
     * 记录 DEBUG 级别的异常日志。
     *
     * @param msg 异常描述信息
     * @param t 异常对象
     */
    void debug(String msg, Throwable t);


    /**
     * 判断是否启用 INFO 日志级别。
     *
     * @return 如果启用 INFO 级别则返回 true，否则返回 false
     */
    boolean isInfoEnabled();

    /**
     * 记录 INFO 级别的日志消息（支持参数化格式）。
     *
     * @param format 消息模板，使用 {} 表示参数位置
     * @param arguments 参数值列表
     */
    void info(String format, Object... arguments);

    /**
     * 记录 INFO 级别的异常日志。
     *
     * @param msg 异常描述信息
     * @param t 异常对象
     */
    void info(String msg, Throwable t);


    /**
     * 判断是否启用 WARN 日志级别。
     *
     * @return 如果启用 WARN 级别则返回 true，否则返回 false
     */
    boolean isWarnEnabled();

    /**
     * 记录 WARN 级别的日志消息（支持参数化格式）。
     *
     * @param format 消息模板，使用 {} 表示参数位置
     * @param arguments 参数值列表
     */
    void warn(String format, Object... arguments);

    /**
     * 记录 WARN 级别的异常日志。
     *
     * @param msg 异常描述信息
     * @param t 异常对象
     */
    void warn(String msg, Throwable t);


    /**
     * 判断是否启用 ERROR 日志级别。
     *
     * @return 如果启用 ERROR 级别则返回 true，否则返回 false
     */
    boolean isErrorEnabled();

    /**
     * 记录 ERROR 级别的日志消息（支持参数化格式）。
     *
     * @param format 消息模板，使用 {} 表示参数位置
     * @param arguments 参数值列表
     */
    void error(String format, Object... arguments);

    /**
     * 记录 ERROR 级别的异常日志。
     *
     * @param msg 异常描述信息
     * @param t 异常对象
     */
    void error(String msg, Throwable t);
}

    
    